//
//  DetailViewController.swift
//  Swift列表显示
//
//  Created by 伍银荣 on 2021/12/10.
//  Copyright © 2021 com.WYR. All rights reserved.
//

import UIKit

class DetailViewController: UIViewController {
    //定义一个闭包属性
    var didSavedCallBack:(() -> ())?
    
    
    var data: PersonData?
//    {
//        //如果此时这样写,控制器创建出来了,但是子视图还没有创建出来
//        //如果 写了 print(view),此时如果view 为 nil,就会调用 loadView 方法创建出控制器的view,子视图也就创建出来了,所以这样写不会崩溃
//        didSet {
//            print(view)
//            nameTextField.text = data?.name
//            ageTextField.text = String(data?.age ?? 0)
//        }
//    }
    
    
    @IBOutlet var nameTextField: UITextField!
    
    @IBOutlet var ageTextField: UITextField!
  
    
    //监听输入框内容的改变
    @IBAction func textChanged() {
        //如果两个输入框都有内容,才允许保存
      self.navigationItem.rightBarButtonItem?.isEnabled = nameTextField.hasText && ageTextField.hasText
    }
    
    @IBAction func saveBtnClicked(_ sender: Any) {
        //将输入框的值设置给模型数据,返回到列表显示界面(使用 UI 更新模型)
        data?.name = nameTextField.text
        //第一个 ! 保证字符串一定有内容
        //第二个 ! 保证一定能转化成整数
        //data?.age = Int(ageTextField.text!)!
        //还可以这样写 (如果前面部分的内容为 nil 的话这个值就是 0 )
        data?.age = Int(ageTextField.text!) ?? 0
       // print(data)
        // 完成回调,通知控制器刷新数据 - 闭包
        //问号 ? 表示如果闭包不存在,就不执行 -> OC 中调用block之前一定要判断
        // 如果强行解包,同时没有设置数值,会崩溃
        didSavedCallBack?()
        
        navigationController?.popViewController(animated: true)
    }
    
    
    
    

    override func viewDidLoad() {
        super.viewDidLoad()
        nameTextField.text = data?.name
        ageTextField.text = String(data?.age ?? 0)
        //激活保存按钮
        textChanged()
    }
    

    /*
    // MARK: - Navigation

    // In a storyboard-based application, you will often want to do a little preparation before navigation
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        // Get the new view controller using segue.destination.
        // Pass the selected object to the new view controller.
    }
    */

}
